حماية الخلية من تغيير أو مسح محتوياتها بدالة - بدون حماية الورقة وبدون
#1
تم الارسال 13 September 2009 - 08:56 PM
عندنا خلية يوجد فيها معادلة وأريد حماية هذه الخلية من الخطأ غير المتعمد - لكن أريد الحماية بطريقة أخرى غير طريقة حماية عناصرالورقة المعروفة
مثلا من خلال وضع هذه الصيغة (ISTEXT(A1);ISNUMBER(A1)) في التحقق من الصحة خيار (مخصص) - استطعت أن أحمي الخلية A1 من أي تعديل أو تغير أوإضافة
ولكن للأسف الشديد هذه الصيغة لاتحمي الخلية من حذف محتوياتها بزر DEL أو backspace فبمجرد أن تضغط زر دليت تذهب الصيغة الموجودة في A1 أدراج الرياح .
هل هناك صيغة أو دالة أو طريقة معينة تحمي الخلية من الحذف ؟ طبعا أولوية الجواب لغير الأكواد أريد الكود يكون آخر حل وشكرأ
دمتم
#2
تم الارسال 14 September 2009 - 09:02 AM
و افضل طريقة هي الطريقة التقليدية في الحماية للخلايا التي تحتوي معادلات
كان رسول الله صلى الله عليه وعلى آله وسلم يقول:
اللهم إني أعوذ بك من زوال نعمتك وتحول عافيتك وفجاءة نقمتك وجميع سخطك
أخرجه مسلم.
اللهم فرج همنا و هم إخواننا المسلمين في كل مكان
إخوتي أطلب منكم الدعاء لي بالتوفيق و النجاح فلقد بدأت بدراسة شهادة
CMA - Certified Management Accountant
و أنا الآن بأشد الحاجة إلى دعائكم إخوتي
#3
تم الارسال 14 September 2009 - 08:41 PM
#4
تم الارسال 15 September 2009 - 01:44 AM
كانت لدي فكرة لانشاء كود أو ماكرو يقوم بعملية الإسترجاع خطوة للوراء وذلك مباشرة بعد كل ضغطة على زر del أو backspace بحيث كلما انمسحت المعادلة من الخلية A1 تعود بفضل التراجع عن هذا الاجراء ... ولكن للأسف خبرتي في صياغة الأكواد ضعيفة فلا اعرف كيف اجعل اكسل يستجيب لتنفيذ الماكرو تلقائيا عند نقطة الحدث (بعد اي عملية حذف) . ارجو من المشرفين والخبراء التفضل بمساعدتي عاجلا وشكرا .
#5
تم الارسال 16 September 2009 - 08:21 PM
يوجد في المرفق توضيح أكثر للمطلوب أرجو الإطلاع عليه وتعديل مايلزم على الأكواد الموجودة فيه.
وشكرا
ارفق ملف(ملفات)
-
عدد مرات التغير و منع الحذف.rar (22.38K)
عدد مرات التحميل : 11
#6
تم الارسال 16 September 2009 - 11:18 PM
الكود التالي مثال لعدم حذف او تغيير صيغة في الخلايا
C1:C10
Dim Kh_Formula
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
On Error Resume Next
Application.EnableEvents = False
Target.Formula = Kh_Formula
Application.EnableEvents = True
On Error GoTo 0
End If
End Sub
Private Sub Worksheet_Selectionchange(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
Kh_Formula = Target.Formula
End If
End Sub
تفضل المرفق
ارفق ملف(ملفات)
-
منع حذف صيغة في خلايا معينة.rar (10.18K)
عدد مرات التحميل : 20
#7
تم الارسال 16 September 2009 - 11:28 PM
خبور خبر واخوانه الكرام
بارك الله لكم آمين


#8
تم الارسال 17 September 2009 - 12:24 AM
الكود الذي تفضلت به يمنع التغيير والحذف فعلا
ولكن جرب أن تغير أو تحذف الخلية النشطة عند فتح الملف قبل أن تتحرك أي حركة ستجد أن المعادلة تم حذفها
أخي halwim
إذا كنت تريد حماية خلية بها معادلة من التغيير أو الحذف
جرب هذه الحيلة
Private Sub Worksheet_Selectionchange(ByVal Target As Range)
If Target.HasFormula = True Then
MsgBox ("خلية محمية" & vbNewLine & "مع تحيات أخوكم محمد صالح")
ActiveCell.Offset(0, 1).Select
End If
End Sub
وأخبرني
تنفع ولا ....؟
التغير هو القانون الدائم للحياة
ودوام الحال من المحال
فلماذا لا نتغير بإرادتنا إلى ما نريد
قبل أن تغيرنا الحياة مجبرين
إلى ما لا نريد
؟؟؟
!!
موسوعة الأستاذ الشاملة
#9
تم الارسال 17 September 2009 - 05:22 AM
أخي الأستاذ خبور خير أشكر مرورك الكريم كما أني لا أزال أتذكر مساعداتك لي قبل انقطاعي ولعلك تتذكر كم ناقشت معك أشياء ومسائل معقدة تسهلت بجهودك جزاك الله الف خير
... وعلى أي حال الكود جدا جميل ولكن فيه عيب صغير وأعتقد أنك سوف تتغلب على هذه المشكلة التي أشار إليها أخي الأستاذ mas123 وهي أن الخلية النشطة عند فتح المستند وقبل أي تحرك يمكن حذفها ... أرجو أن يصل الكود إلى مستوى الطموح وشكرا
أخير الأستاذ mas123 شكرا على مرورك وملاحظاتك الدقيقة والكود الذي أتحفتنا به جدا ممتاز ويؤدي الغرض ، ولكن هل يمكن أن يؤدي نفس الوظيفة بدون خروج رسالة؟
أخيرا أدعو لكم بالتوفيق والسداد وشكرا .
#10
تم الارسال 17 September 2009 - 05:29 AM
http://www.officena....showtopic=29795
رجاء لا أمر وأرجو المعذرة على التطرق لموضوع آخر هنا
#11
تم الارسال 17 September 2009 - 09:40 AM
halwim, on 17 September 2009 - 06:22 AM, said:
أخي الأستاذ خبور خير أشكر مرورك الكريم كما أني لا أزال أتذكر مساعداتك لي قبل انقطاعي ولعلك تتذكر كم ناقشت معك أشياء ومسائل معقدة تسهلت بجهودك جزاك الله الف خير
... وعلى أي حال الكود جدا جميل ولكن فيه عيب صغير وأعتقد أنك سوف تتغلب على هذه المشكلة التي أشار إليها أخي الأستاذ mas123 وهي أن الخلية النشطة عند فتح المستند وقبل أي تحرك يمكن حذفها ... أرجو أن يصل الكود إلى مستوى الطموح وشكرا
أخير الأستاذ mas123 شكرا على مرورك وملاحظاتك الدقيقة والكود الذي أتحفتنا به جدا ممتاز ويؤدي الغرض ، ولكن هل يمكن أن يؤدي نفس الوظيفة بدون خروج رسالة؟
أخيرا أدعو لكم بالتوفيق والسداد وشكرا .
شكرا لمرورك الكريم أخي الكريم
و لعدم خروج الرسالة احذف هذا السطر من الكود
MsgBox ("خلية محمية" & vbNewLine & "مع تحيات أخوكم محمد صالح")
ملاحظة
الكود الخاص بي به نفس الثغرة إذا أضفته للملف وخلية بها معادلة هي النشطة ثم أغلقت الملف وفتحته ثم قمت بالتعديل سيتم التعديل
وجاري البحث عن حل
والحل المؤقت حاليا هو
نقل الخلية النشطة إلى خلية ليس بها معادلة ثم حفظ الملف وإغلاقه
بحيث عند الفتح لايفتح على خلية بها معادلة فيسهل تغييرها
دمتم طيبين
التغير هو القانون الدائم للحياة
ودوام الحال من المحال
فلماذا لا نتغير بإرادتنا إلى ما نريد
قبل أن تغيرنا الحياة مجبرين
إلى ما لا نريد
؟؟؟
!!
موسوعة الأستاذ الشاملة
#12
تم الارسال الأمس, 06:42 AM
أخي الأستاذ mas123 والأستاذ خبور أشكركم على التفاعل في الموضوع وبالنسبة لمشكلة مسح الخلية النشطة بعد فتح الملف مباشرة وقبل أي تحرك أعتقد أنه من خلال الأكواد الموجودة في الملفين بالمرفقات يمكن التغلب على هذه المشكلة .
تدور في رأسي عدة احتمالات عن أسباب هذه المشكلة وأتصور أن المشكلة تحدث بسبب أن الكود لايجد أي حدث يتراجع عنه بينما لو قمنا بأي تحرك من خلية إلى خلية أخرى فهذا العمل يعتبر حدث يمكن للكود التراجع عنه - فإذا كان هذا الأمر فعلا هوسبب المشكلة فأعتقد أننا إقتربنا كثير من حل هذه المشكلة حيث يوجد في المرفقات كود يقوم بالذهاب إلى أول خلية فارغة من العمود المحدد تلقائيا بعد الفتح مباشرة ( الملف في المرفق في المجلد رقم1 ) وقد جربته وهو فعلا رهيب فمثلا في العمود A بينات في المجال A1:A20 وقبل أن أخرج من المستند جعلت الخلية A14 هي الخلية النشطة.
طبعا بعد ذلك حفظت المستند وخرجت - ثم فتحت المستند من جديد ووجدت أن الخلية النشطة أصبحت A21 وهي أول خلية فارغة في العمود.
بودي من الأعضاء واخواني الخبراء استخلاص هذا الكود ودمجه مع كود المهندس خبور خير أوكود الاستاذ mas123 لكي نخرج بكود واحد يؤدي المطلوب يجبر إكسل على الوقوف في خلية فارغة مما يجعل المعادلات تصبح في أمان لوتم الضغط على زر DEL ثم لو حصل تحرك من الخليةالفارغة إلى أي خلية توجد فيها معادلة سوف يتم الإمتناع أي تغير بفضل الأكواد الموضوعه قبل هذه المشاركة حيث أنها قادرة على منع التغيرات الحاصلة بعد التحرك المسبق .
وأتمنى أيضا أن يكون التعديل في الكود القادم شاملا لخصوصية الوقوف عند أول خلية فارغة ( من العمود الذي تم الوقوف فيه قبل الخروج ) فلو تم الخروج من
المستند وكانت الخلية النشطة ضمن أحد الخلاياغيرالفارغة من العمود B فإنه ينبغي عند فتح المستند من جديد يتم التركيز على أول خلية فارغة من نفس العمود.
وهذه الخصوصية موجود في ( الملف المرفق في المجلد رقم2 ) وهي تعمل بالضغط على زر لكن المطلوب أن يعمل الماكرو تلقائيا بعد فتح المستند مباشرة بدون ضغط الزر .
وهذا رابط طرحته قبل سنتين تقريبا وهو مفيد جدا يساعد على ايجاد الحل لمن يود المساعدة :
http://www.officena....showtopic=14180
وهذا رابط آخر أيضا مهم في المقام :
http://www.officena....showtopic=10164
أتمنى لكم التوفيق والسداد
مع تحياتي
ارفق ملف(ملفات)
-
halwim_1and2.rar (205.61K)
عدد مرات التحميل : 3
#13
تم الارسال الأمس, 10:29 AM
المطلوب كما تريد يتم الانتقال تلقائيا إلى الخلية a1 عند فتح الملف
ويتحرك إلى الخلية المجاورة للخلية التي تحتوي على معادلة
ارفق ملف(ملفات)
-
mas-no-del-edit-formula.rar (10.51K)
عدد مرات التحميل : 4
التغير هو القانون الدائم للحياة
ودوام الحال من المحال
فلماذا لا نتغير بإرادتنا إلى ما نريد
قبل أن تغيرنا الحياة مجبرين
إلى ما لا نريد
؟؟؟
!!
موسوعة الأستاذ الشاملة
#14
تم الارسال الأمس, 10:38 AM
متعووووووووب فيه
JOE
#15
تم الارسال الأمس, 04:36 PM
#16
تم الارسال الأمس, 04:37 PM
أخي استاذ mas123 جرب وضع معادلة في الخلية IV1 وهي تقع في أقص يمين الورقة - تخرج رسالة خطأ لأنه لاتوجد خلية مجاورة للإنتقال اليها
لو تضيف للكود خصوصية الانتقال يمين ( أو ) يسار لأن كل خلية حتما لابد لها من يمين أو يسار أو فوق أو تحت .... ارجو اتعديل.
ومارأيك في الأفكار التي طرحتها في مشاركت السابقة ؟
خصوصا: (أتمنى أيضا أن يكون التعديل في الكود القادم شاملا لخصوصية الوقوف عند أول خلية فارغة ( من العمود الذي تم الوقوف فيه قبل الخروج ) فلو تم الخروج من
المستند وكانت الخلية النشطة ضمن أحد الخلاياغيرالفارغة من العمود B فإنه ينبغي عند فتح المستند من جديد يتم التركيز على أول خلية فارغة من نفس العمود.
وهذه الخصوصية موجود في ( الملف المرفق في المجلد رقم2 ) وهي تعمل بالضغط على زر لكن المطلوب أن يعمل الماكرو تلقائيا بعد فتح المستند مباشرة بدون ضغط الزر . )
دمت طيبا
#17
تم الارسال الأمس, 09:43 PM
ملاحظة :
1- الكود لا يغير اي شي في الخلايا المحددة وليس الصيغ فقط.
2- اذا قمت بتحديد اكثر من خلية ومن ضمنها الخلايا المحددة في الكود
لا يتم المسح بتاتا.
=====================
Quote
المستند وكانت الخلية النشطة ضمن أحد الخلاياغيرالفارغة من العمود B فإنه ينبغي عند فتح المستند من جديد يتم التركيز على أول خلية فارغة من نفس العمود.
اضفنا هذا الكود في حدث الدخول الى ملف الاكسل
Private Sub Workbook_Open()
With ورقة1
If ActiveSheet.Name = .Name Then
.KH_sheet_Activate
End If
End With
End Sub
وتم اضافة بسيطة في اكواد حدث ورقة1
Dim Kh_Formula
Private Sub Worksheet_Activate()
KH_sheet_Activate
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
On Error Resume Next
Application.EnableEvents = False
Target.Formula = Kh_Formula
Application.EnableEvents = True
On Error GoTo 0
End If
End Sub
Private Sub Worksheet_Selectionchange(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
Kh_Formula = Target.Formula
End If
End Sub
Sub KH_sheet_Activate()
Dim C As Integer
C = ActiveCell.Column
Cells(Rows.Count, C).End(xlUp).Offset(1, 0).Select
End Sub
تفضل المرفق
ارفق ملف(ملفات)
-
منع حذف صيغة في خلايا معينة1.rar (7.72K)
عدد مرات التحميل : 5
تم تعديل هذه المشاركة بواسطةخبور خير: اليوم, 08:02 PM
#18
تم الارسال الأمس, 10:14 PM
يا استاااذ خبور
مش عارف الصق صور
حتى تغيير الاسم يبدو انه لناس ناس انا عملت كل المحاولات ولم تجدي
اصدار المنتدى ده بكل اسف متعب
المنتديات الحديثة في كل مكان وسهله وصثدوق الكتابه فيها متروس خير نختار منه كلمات الشكر والبسمله وحاجات حلوة وصور صغيرة معبرة ...
#19
تم الارسال اليوم, 01:52 AM
عمل رائع
لكن هل ممكن تحديد اكثر من نطاق فى نفس الورقة
وكذلك هل ممكن فى اكثر من ورقة عمل
تم تعديل هذه المشاركة بواسطةsafwatscc: اليوم, 02:07 AM
#20
تم الارسال اليوم, 05:08 AM
بس ياليت تشرح لنا طريقة تغيير المجال كما لو أردنا حماية النطاق A1:D10 فكيف يتم ذلك ؟ وكذلك لو أردنا حماية النطاقين A1:D10 + F1:K10 أرجو التفضل بالشرح أو إرفاق ملف بالمطلوب ؟
كما لا يفوتني أن أشكر بقية الأعضاء راجيا تلبية استفساراتهم .
دمت طيبا





موضوع جديد
اضف ردا
شاهد الموضوع 
تقرير
اقتباس متعدد














